package csc.fresher.service;

import java.sql.Timestamp;
import java.util.List;

import csc.fresher.entity.CustomerAccount;
import csc.fresher.entity.DepositTransaction;
import csc.fresher.entity.TransactionState;

public interface DepositAccountTransactionService {

	public long withdrawFunds(DepositTransaction transaction);

	public long addFunds(DepositTransaction transaction);

	public long transferFunds(DepositTransaction transaction);

	public List<DepositTransaction> getDepositTransactionByState(
			TransactionState transactionState);

	public DepositTransaction getTransactionByID(long transactionID);

	public boolean approveWithdrawFunds(DepositTransaction transaction,
			long adminID);

	public boolean denyWithdrawFunds(DepositTransaction transaction,
			CustomerAccount account, long adminID);

	public boolean approveAddFunds(DepositTransaction transaction,
			CustomerAccount account, long adminID);

	public boolean denyAddFunds(DepositTransaction transaction, long adminID);

	public boolean approveTransferFunds(DepositTransaction transaction,CustomerAccount receiver,long adminID);

	public boolean denyTransferFunds(DepositTransaction transaction,CustomerAccount sender,
			long adminID);

	public List<DepositTransaction> searchTransactionByCustomerCardIDInGivenPeriod(
			long customerCardID, Timestamp beginDate, Timestamp endDate);
}
